电子计算机的发明是20世纪科学对社会发展最伟大的贡献之一,它大大改变了我们人类工作的方式。计算机的作用在下一个世纪仍然是举足轻重的,因为它不仅将继续改进我们的工作方式和效率,还将给人类的生活质量带来巨大改变。
电子计算机技术可以分为计算机硬件技术、计算机软件技术和计算机应用技术三个领域。本文由于篇幅所限,只讨论计算机硬件技术和软件技术的发展问题。
计算机硬件领域主要研究计算机系统结构原理和设备构造技术,面对的问题包括结构、速度、存储、互连、成本和可靠性等。
计算机系统结构本身的发展经历了从机械结构、电子模拟结构、电子数字结构的进化过程。从20世纪40年代开始到现在,电子数字计算机的结构经历了从电子管、晶体管、集成电路、超大规模集成电路等四个阶段的进化。从50年代到70年代,计算机是高级设备,没有经济实力的组织是无法拥有或者使用的。到了80年代,由于微处理器的出现,使得计算机的成本越来越低、应用越来越普及。50年代初计算速度每秒5000次(运算)机器的体积和一座大楼一样大,今天摆在我们办公桌上的普通台式计算机的计算能力大约为每秒5亿次,也就是说相当于50年代10万个大楼组成的计算机的计算能力,目前最好的台式机的计算速度已经达到每秒10亿次。按照著名的摩尔定律(即集成电路的性能每18个月翻一番)计算,今天计算速度为10亿次的计算机,到2010年时的计算速度大约为1280亿次,也就是说到那时5000亿次的计算机用4个台式计算机组合起来就可以了,而今天我们却需要使用大约500个CPU构造一台这样的机器,或者使用500多个台式计算机连接起来。所以每过10年,高性能计算机的计算速度就要增加100倍。也就是说,今天我们研制高性能计算机的计算速度要达到1012(万亿)次,2010年要达到1014次,2020年要达到1016次……2100年要达到1032次。
20世纪的电子计算机按照巨型机、大型机、中型机、小型机、微机(个人计算机)等进行分类。但是巨型、大型等等概念是相对的,是随时间变化而改变的,例如60年代的巨型机并不比80年代的微机计算能力强。今后,计算机将简单的划分为服务器(server)和客户机(client)两类。连接在网上提供计算、数据处理和软件环境支撑的是服务器,而用户直接使用的则是客户机。从技术的走向预测:服务器的能力今后会越来越强,用于科学计算的超级服务器会达到千万亿以上,用于数据处理的超级服务器在数据交换速度和数据仓库的容量和管理能力方面都会比现在的服务器高得多;客户端计算机的发展是越来越智能化(傻瓜化、个性化)、方便化(可移动、嵌入式)。而智能化要求计算机中处理器的性能更强,人工智能技术和软件技术更先进。
目前的计算机是架构在基于微电子理论的半导体技术之上的,计算机硬件的发展主要取决于集成电路技术和工艺的发展。摩尔定律成功地预测了半导体技术发展的规律。然而,随着大规模集成电路工艺的发展,集成度越来越高,越来越接近于工艺甚至物理上限。一般认为,50纳米将是超大规模集成电路生产的工艺较难超越的精度,现在正在使用的最高集成度在180纳米左右,估计到2010年,将达到50纳米。因此,很多科学家开始寻找研究新一代的计算机硬件。超导计算机、生物计算机和量子计算机是诸多探索中被注意的较多的三个方向。超导计算机的主频估计可以在100吉赫兹以上工作,大约2010年可能成为与现在的超大规模集成电路计算机共存的计算机体系结构,因为到那时半导体器件已经达到了工艺极限,摩尔定律或者新的摩尔定律必须要由超导计算机来维持。在超导计算机之后,将可能是基于光学理论的量子计算机的天下,量子计算机被认为极有可能在下一个世纪的头30年取得重大突破,并在2040年前后研制成功可以商业使用的计算机。生物计算机将极有可能是继量子计算机之后的新一代计算机,尽管它的工作机理目前大部分已经清楚,但是何时能够制造出可与今天的计算机在速度、可靠性、成本等方面相匹敌的生物计算机仍然是一个难以预测的问题。
除了计算机单机结构本身的技术,为了构造高性能计算机的并行处理技术和分布式处理技术也是计算机系统结构中研究的重要问题。今天的计算机互连技术已经做到可以把数万台计算机连到一起,组成一台峰值计算速度极高(例如几十万亿次)的计算机,然而如何把这台高性能计算机真正利用起来求解一个大问题还存在许多问题。任务分配不均、通信开销过大、等待前一处理的数据相关性等等都是经常面临的困难。为了解决这些问题,科学家已经研究了近40年,试图从互连技术、快速通信技术、并行编译理论、网络操作系统、优化运行时系统、并行函数库等多方面进行探索。
计算机硬件所包含的范畴除了传统的计算机系统结构外,还包括计算机网络和外设。计算机网络包含Internet,Intranet,Extranet等等。高性能计算机是把互联和通信作为一个中间过程和手段进行使用,但计算机网络却是把互连和通信作为核心技术进行研究。计算机网络研究的问题是所有上网计算机的可靠有效连接和资源共享。IP技术和WEB浏览技术是20世纪计算机网络成功的基石。当然,现在IP技术还存在着没有服务质量控制的问题,WEB浏览技术也存在着信息检索效率低和资源管理困难的问题等。21世纪计算机网络的网络路由设备的心脏实际上也是计算机,只不过是一台专门用来进行网络通信的计算机而已。
打印机、磁带机、绘图仪等也都是专门用来控制特定设备的计算机。
计算机软件领域主要研究计算机使用环境技术,包括系统软件、用户编程环境与工具、应用软件等等。需要解决的问题包括进化性、兼容性、重用性、友好性、可靠性等等。
如果说硬件是计算机的身体,则软件就是计算机的神经和大脑。因此软件的好坏直接决定了计算机的效率和应用水平。计算机软件作为20世纪人类文明进步的最大成果之一,必将成为人类文化的重要组成部分。现在的人类文化是构筑在语言、文化环境和文化作品的架构上,其中语言是基本的、开放的和共享的,这是人类文明可以不断进化的根本保证。将计算机软件与人类文化相类比,系统软件相当于人类语言,用户编程环境和工具相当于文化环境,而应用软件相当于文化作品。对比之下,计算机的系统软件现在绝大多数还不开放、不共享。从商业的角度看,如果没有商业利益的驱使、初期此领域很难发展起来。但发展到了一定阶段,如果系统软件不开放将会阻碍本领域的发展速度,不利于软件进化。现在的LINUX开放源码运动从某种程度上正是顺应这个潮流,因此可以预见必将最后取得成功。在操作系统方面,本世纪技术上最成功的系统是UNIX,在概念上最成功的是美国苹果公司所提出的视窗图形界面,在商业上最成功的是微软公司的WINDOWS操作系统。下一世纪的操作系统将继承现在好的操作系统的主要优点,变成开放的和进化的。在操作系统开放之后,系统软件产业将主要集中在软件环境平台和工具的研究开发上。可视化编程环境与工具、办公套件、家庭套件、学习套件等将会有很大的发展空间。
计算机硬件发展的速度可以用摩尔定律解释,即每18个月翻一番,软件的发展速度目前还没有类似的定律可以使用。从历史上看,软件在计算机程序设计语言的进化方面大约每10年一代,从本世纪50年代的机器语言、60年代AL?GOL语言、70年代FORTRAN语言、80年代C语言、90年代JAVA语言。由于软件的存在是依附在硬件之上的,而前些年硬件的发展变化很快,因此从旧平台向新平台的软件移植花费了我们大量的财力和时间。这中间有大量的软件由于种种原因无法及时完成移植而没有被继承下来。软件的兼容性和重用性一直是人们努力研究的目标,也就是说要使得一次写好的应用软件在各种不同硬件系统上都可以运行、要使得已经设计好的程序模块被有效地重复利用。在软件的兼容性方面,20世纪贡献最大的工作是JAVA语言的发明,该语言的设计宗旨是“程序书写一次,到处都可运行(write it once,run it everywhere)”。目前跨平台这一设想还没有完全有效地被实现,相信21世纪第一个10年一定可以完成。当然,如何解决非JAVA语言软件的跨平台问题仍然是一个难题。
计算机硬件能够快速发展的原因之一是工业化程度比较好,很多集成电路按照功能做成标准器件,因而好的功能块会保留下来并不断改进。但是到目前为止软件的工业化程度还比较差,还做不到像硬件一样好的程序被继续不断的使用。很多算法和程序被很多人在不同的系统中重复地实现了多次,同样的错误在不同的地方犯了又犯,很有点像古时候没有文字的年代人们传播文化和知识一样,一代一代的口授脑记,绝大部分人用毕生的精力在重复别人已经做过的事,走同样的弯路然后通过自我反省来改正。计算机科学家和软件工程师对于软件重用、软件复用的技术已经研究了几十年。已经提出了包括软件的模块化、软件重用技术、软构件技术、软件总线等等概念。CORBA,DCOM Java Bean等软件体系结构和中间件接口标准技术,是软件重用的很好尝试。目前在因特网上已经开始有一些用JAVA语言和库函数形式提供的软件构件可以提供使用,随着这种软构件的规范化和实用化,计算机软件生产的工业化程度会慢慢提高,软件发展的速度也会慢慢加快。估计到21世纪的第一个10年结束的时候,软件的工业化程度应该达到20世纪90年代中期计算机硬件的工业化程度。
软件的友好性主要取决于用户界面的设计和人机交互流程的质量。界面越吸引人,人机交互流程与人的习惯越接近,软件就越友好。多媒体技术、语音识别与合成技术、手写体文字的识别、自然语言理解与机器翻译技术、图像处理与图形学技术、用户图形界面技术、人工智能技术等等都是解决软件系统友好性的关键技术,然而因为20世纪的计算机在速度和存储容量方面还不能容忍这些技术被广泛应用,所以目前的现状是计算机不够友好。预计在21世纪开始的5一10年中,这一情况将会有大的改变。
软件的质量不高是另外一个制约软件发展的因素。软件生产质量的改进可以从两个方面入手,一是建立软件质量保证体系,通过对软件人员的有效训练和工程管理来减少软件错误;二是发展软件正确性验证和测试技术,利用逻辑证明来发现软件中的矛盾从而找出和自动定位错误。软件质量保证体系的最高目标是编制完全无错误的程序,现阶段的高级目标是一百万行程序中只允许有一行错误。软件质量保证体系能否有效建立主要取决于管理因素,这是21世纪各个国家和地区在计算机软件产业的竞争中成败的关键。软件正确性验证问题可以归结为“布尔表达式可满足性问题”,这是计算机科学中的一个“难解问题”,目前的现状处于采用优化的方法进行快速求解的应用算法学研究阶段。欧洲在航天领域已经开始尝试使用这种技术对于软件进行验证。估计在21世纪第二到第三个10年,软件正确性验证和测试技术将取得重大突破并开始走向实用。届时,软件的工业化程度将达到只落后于计算机硬件1一2年的水平。
应用软件,包括大型科学计算系统、海量数据管理系统、智能决策支持系统、计算机辅助设计、计算机仿真、计算机控制系统等等,在21世纪的社会生活和进步中将发挥更大的作用。利用了WEB浏览技术、多媒体技术和网络信息管理系统等综合技术而构成的网络应用软件(例如电子商务)将是今后软件业发展的最大舞台。其中,作为多媒体研究热点的多媒体数据压缩与传输、数据加密、数字水印技术将是21世纪初发展的重点。与网络应用软件相配合的信息服务,将为我们的社会带来更大的商业机会和更多的就业机会,并通过它慢慢改变社会的就业结构和人类的知识结构比例来拉动21世纪的社会从工业社会向信息社会的逐步转化。